/* 先序建立二叉搜索树并先序遍历 */

#include <iostream>
#include "PreThreadBiTreefun.h"
using namespace std;

// 找到下一个要遍历的结点
TNode *Next(TNode *p)
{
  // 如果存在左孩子
  if (p->ltag != 1)
    return p->lchild;
  
  // 右孩子 或者 后序结点
  return p->rchild;
}

// 先序遍历二叉搜索树
void qq(TNode *p)
{
  for (TNode *q = p; q != NULL; q = Next(q))
    cout << q->data << " ";
}

int main()
{
  // 创建二叉树
  TNode *T = create_iTree();
  
  // 构建线索
  TNode *pre = NULL;
  if (T != NULL)
  {
    preTh(T, pre);
    pre->rchild = NULL;
    pre->rtag = 1;
  }
  
  // 先序遍历
  qq(T);
  return 0;
}